// ios日期兼容处理
export function initIosDate (time) {
// 这里可能后台返回的是个时间new Date
  time = time + ''
  // ios 时间不兼容-  2019-06-21T06:25:17.000+0000  删除- T .后面
  // time = time.replace(/T/g, ' ').replace(/\.[\d]{3}Z/, '').replace(/(-)/g, '/')
  // time = time.replace(/T/g, ' ').replace(/\.[\d]{3}Z/, '').replace(/(-)/g, '/')
  // time = time.slice(0, time.indexOf('.'))
  time = time.replace(/-/g, '/')
  return time
}

// 针对ios端已经优化  ios端日期字符 只有 yyyy/mm/dd 格式字符串才能转ios时间
export function str2Date (str) {
  if (str instanceof Date) {
    return str
  }
  return new Date(initIosDate(str))
}

// Date 转 String  格式化 针对ios已经做了处理
export function parseTime (time, cFormat) {
  if (!time) return ''
  // 这里可能后台返回的是个时间new Date
  if (arguments.length === 0) {
    return null
  }
  const format = cFormat || '{y}-{m}-{d} {h}:{i}:{s}'
  let date
  if (typeof time === 'object') {
    date = time
  } else {
    if ((typeof time === 'string') && (/^[0-9]+$/.test(time))) {
      time = parseInt(time)
    } else
    if ((typeof time === 'number') && (time.toString().length === 10)) {
      time = time * 1000
    } else {
      // 普通字符 ios 处理
      time = initIosDate(time)
    }
    date = new Date(time)
  }
  const formatObj = {
    y: date.getFullYear(),
    m: date.getMonth() + 1,
    d: date.getDate(),
    h: date.getHours(),
    i: date.getMinutes(),
    s: date.getSeconds(),
    a: date.getDay()
  }
  const timeStr = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => {
    let value = formatObj[key]
    // Note: getDay() returns 0 on Sunday
    if (key === 'a') {
      return ['日', '一', '二', '三', '四', '五', '六'][value]
    }
    if (result.length > 0 && value < 10) {
      value = '0' + value
    }
    return value || 0
  })
  return timeStr
}

/**
 * 获取日期的星期
 * @param date
 * @returns {string}
 */
export function getWeek (date) {
  if (!date) return ''
  const weekDay = ['周日', '周一', '周二', '周三', '周四', '周五', '周六']
  if (date instanceof Date === false) {
    date = initIosDate(date)
    date = new Date(date)
  }
  return weekDay[date.getDay()]
}

/**
 * 获取月份
 * @param date
 * @returns {string}
 */
export function getMonth (date) {
  date = initIosDate(date)
  const month = ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月']
  if (typeof date === 'string') {
    date = new Date(date)
  }
  return month[date.getMonth()]
}

/**
 * 判断是否是同一天
 * @param date1
 * @param date2
 */
export function isSameDay (date1, date2) {
  if (date1 instanceof Date === false) {
    date1 = str2Date(date1)
  }
  if (date2 instanceof Date === false) {
    date2 = str2Date(date2)
  }
  return date1.setHours(0, 0, 0, 0) === date2.setHours(0, 0, 0, 0)
}
